# coding:utf-8

# food = input('你想吃什么呢：')
# print(food)
#
#
# help(input)

class Test(object):
    a = 1
    b = 2

    def __init__(self):
        self.a = self.a
        self.b = self.b


"""
vars([object])
返回模块、类、实例或任何其它具有 __dict__ 属性的对象的 __dict__ 属性。
"""
test = Test()
print(test.a)  # 1
result = vars(test)
print(result)  # {'a': 1, 'b': 2}

"""
hasattr(object, name)
该实参是一个对象和一个字符串。如果字符串是对象的属性之一的名称，则返回 True，否则返回 False。
（此功能是通过调用 getattr(object, name) 看是否有 AttributeError 异常来实现的。）
"""
print(hasattr(test, 'a'))  # True
print(hasattr(list, 'appends'))  # False

"""
setattr(object, name, value)
本函数与 getattr() 相对应。其参数为一个对象、一个字符串和一个任意值。字符串可以为某现有属性的名称，或为新属性。
只要对象允许，函数会将值赋给属性。如 setattr(x, 'foobar', 123) 等价于 x.foobar = 123。
"""
setattr(test, 'c', 3)
print(test.c, vars(test))  # 3 {'a': 1, 'b': 2, 'c': 3}

if hasattr(list, 'appends'):
    print(getattr(list, 'appends'))
else:
    print('不能存在')

"""
any(iterable)
如果 iterable 的任一元素为真值则返回 True。 如果可迭代对象为空，返回 False。
"""
a = ['', None, True, 0]
print(any(a))
